package cn.jly.bigdata.spark.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author lanyangji
 * @date 2019/11/24 10:47
 */
object Spark02_expr5 {

  def main(args: Array[String]): Unit = {

    // local模式

    // 创建 SparkConf 对象
    // 这边也自定义了本地的模式（分配多少个cpu）
    // app id
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")

    // 创建spark上下文对象，SparkContext -> sc
    val sc = new SparkContext(sparkConf)

    // 18/4=4--2，多余的会随机分配到分区中，不会增加分区
    val listRDD: RDD[Int] = sc.makeRDD(1 to 18, 4)

    // glom 算子，将每个分区的数据形成一个数据
    // 对以分区为单位的数据操作非常方便，比如求每个分区数据的最大值
    val glomRDD: RDD[Array[Int]] = listRDD.glom()

    for (elem <- glomRDD.collect) {
      println(elem.mkString(","))
      // 求每个分区的最大值
      println(elem.max)
    }
  }
}
